#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
图片重命名脚本
将01-32的图片按照方向(up/left/right/down)和编号(1-8)重命名
"""

import os
import sys
from pathlib import Path

def rename_images(folder_path):
    """
    重命名图片文件
    
    Args:
        folder_path (str): 包含图片的文件夹路径
    """
    # 定义方向映射 - 每个方向8张图片
    directions = ['up', 'left', 'right', 'down']
    
    # 检查文件夹是否存在
    if not os.path.exists(folder_path):
        print(f"错误：文件夹 '{folder_path}' 不存在")
        return False
    
    # 获取文件夹中的所有文件
    folder = Path(folder_path)
    files = list(folder.glob('*'))
    
    # 过滤出图片文件（支持常见图片格式）
    image_extensions = {'.png', '.jpg', '.jpeg', '.gif', '.bmp', '.tiff', '.webp'}
    image_files = [f for f in files if f.suffix.lower() in image_extensions]
    
    if len(image_files) < 32:
        print(f"警告：文件夹中只有 {len(image_files)} 张图片，少于预期的32张")
    
    # 按文件名排序（假设原文件名是01, 02, ..., 32的格式）
    try:
        # 尝试按数字排序
        image_files.sort(key=lambda x: int(x.stem))
    except ValueError:
        # 如果不是纯数字，按字母顺序排序
        image_files.sort(key=lambda x: x.name)
        print("注意：文件名不是纯数字格式，使用字母顺序排序")
    
    print(f"找到 {len(image_files)} 张图片文件")
    print("开始重命名...")
    
    # 重命名文件
    renamed_count = 0
    for i, image_file in enumerate(image_files[:32]):  # 只处理前32张
        # 计算方向和编号
        direction_index = i // 8  # 每8张图片一个方向
        number = (i % 8) + 1      # 1-8的编号
        
        if direction_index >= len(directions):
            break
            
        direction = directions[direction_index]
        new_name = f"archer_red_attack_{direction}_{number}{image_file.suffix}"
        new_path = image_file.parent / new_name
        
        # 检查新文件名是否已存在
        if new_path.exists():
            print(f"警告：文件 '{new_name}' 已存在，跳过重命名 '{image_file.name}'")
            continue
        
        try:
            # 重命名文件
            image_file.rename(new_path)
            print(f"{image_file.name} -> {new_name}")
            renamed_count += 1
        except Exception as e:
            print(f"错误：重命名 '{image_file.name}' 失败 - {e}")
    
    print(f"\n重命名完成！成功重命名了 {renamed_count} 个文件")
    return True

def main():
    """
    主函数
    """
    print("图片重命名工具")
    print("将01-32的图片重命名为：up1-up8, left1-left8, right1-right8, down1-down8")
    print("-" * 60)
    
    # 获取文件夹路径
    if len(sys.argv) > 1:
        folder_path = sys.argv[1]
    else:
        folder_path = input("请输入包含图片的文件夹路径: ").strip()
        if not folder_path:
            print("未提供文件夹路径，使用当前目录")
            folder_path = "."
    
    # 确认操作
    print(f"\n将要处理文件夹: {os.path.abspath(folder_path)}")
    confirm = input("确认要重命名文件吗？(y/N): ").strip().lower()
    
    if confirm in ['y', 'yes', '是']:
        success = rename_images(folder_path)
        if success:
            print("\n操作完成！")
        else:
            print("\n操作失败！")
            sys.exit(1)
    else:
        print("操作已取消")

if __name__ == "__main__":
    main()